iT邦幫忙

2022 iThome 鐵人賽

DAY 5
1

前面幾天提到物件導向範型以及基礎的UML圖,相信大家應該對物件導向有基本的認識了,所以話說回來,為什麼我們要學習設計模式(Design Pattern)呢?

來自建築學和人類學的啟發

我們先看看這個門

https://ithelp.ithome.com.tw/upload/images/20220915/20136443lXQRscKbwp.png

接著再看看這個門

https://ithelp.ithome.com.tw/upload/images/20220915/20136443mTsOzGDfAS.png

從一般視角來看,這兩種門廊結構不同,第一種門廊的目的可能是作為走道和前門的過渡,而第二種門廊可能是提供了在天氣熱時有陰涼處能躲避太陽,或者下雨時能擋雨,但如果以門廊的用意來說,這兩種都是作為「區分出入口」來使用的,只是結構上的不同。

也就是說,觀察解決相似問題的不同結構,可以縮小關注範圍,進而看清優秀設計之間的相似之處,在書中有位名為 Alexander 的建築師,稱這種相似之處為「模式」,他對模式的定義為:

每個模式都描述了一個在我們的環境中會不斷重複出現的問題,並進而敘述了這個問題解決方案的要素,透過這種方式,解決方案能夠百萬次地反覆應用,但是具體方式又不會完全相同。

Alexander 也對模式區分了四個定義:

  • 模式的名稱
  • 模式的目的 (要解決的問題)
  • 實作方法
  • 為了實作該模式我們必須考慮的限制和約束因素

如果以程式的角度來看,學習設計模式的理由就會是:

  • 再利用解决方案 — 透過再利用已經公認的設計,我能夠在解決問題時取得先發優勢,而且避免「重蹈前人覆轍」。我可以從學習他人的經驗中獲益,用不著為那些總是會重複出現的問題再次設計解決方案了。
  • 確立通用術語 一 開發中的交流和協作都需要共同的詞彙基礎和對問題的共識。設計模式在項目的分析和設計階段提供了共同的基準點。

簡單的小結 (設計模式之好)

  • 對不斷重複出現的問題,再利用既有的、高品質的解決方案
  • 確立通用的術語,改善團隊的溝通
  • 提升思考層次
  • 判斷設計是否正確,而不僅僅是能奏效
  • 改善個人學習和團隊學習
  • 提高程式碼的可修改性和可維護性
  • 採用更佳的設計方案,即使沒有明確使用模式
  • 發現巨型繼承層次結構的替代方案

到目前好像講得差不多了(還沒提到真正的模式就過了五天XD),明天要正式進入主題,介紹第一種的設計模式「Facade」,大家明天見囉~


上一篇
【DAY4】UML (統一建模語言)
下一篇
【DAY6】Facade模式 - 今晚...我想來點麥當勞(上)
系列文
勇闖秘境!探索物件導向背後的設計模式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言